/**
 *	@file	np_app.h
 *	@brief	木の実プランター　アプリヘッダ
 *	@author	Miyuki Iwasawa
 *	@date	08.08.04
 */

#ifndef __H_NP_APP_H__
#define __H_NP_APP_H__

#include "np_app_def.h"
#include "system/wordset.h"
#include "system/selbox.h"
#include "system/touch_subwindow.h"
#include "system/pm_rtc.h"
#include "savedata/seedbed.h"
#include "savedata/record.h"

typedef struct _NP_MSG{
	MSGDATA_MANAGER *man;

	WORDSET* wset;		///<ワーク
	STRBUF	*tmp;		///<汎用
	STRBUF	*back;		///<もどる
	STRBUF	*listbuf;	///<やめる
	STRBUF	*exp[MIDX_EXP_MAX];	///<各種説明文
	u8	msg_spd;	///<メッセージスピード
	u8	win_type;	///<ウィンドウタイプ
	u8	dmy[3];	///<padding

#ifdef PM_DEBUG
	STRBUF	*deb[DMIDX_MAX];
#endif	//PM_DEBUG
}NP_MSG;

typedef struct _SEED_STATE{
	u8	type;			///<きのみの種類
	u8	stat;			///<きのみの状態（SEEDSTATの定義を参照）
	u8	seed_hp;
	u8	ground_hp;		///<土のHP（０〜１００）

	u8	compost;		///<肥料の種類
	u8	nuts_ct;		///<収穫できる木の実の数
	u16	grow_tm;		///<カウンタ
	u16	dry_tm;			///<カウンタ

	u8	ground_st;		///<土の状態

	u8	o_type;
	u8	o_stat;
	u8	o_ground_st;

	CLACT_WORK_PTR	act;		///<アクター
}SEED_STATE;

typedef struct _NP_APPWORK{
	int	heapID;
//	NPLANTER_PARAM* param;
	NP_SYSWORK*	sp;

	SAVEDATA* save;
	MYITEM*		item_sv;
	RECORD*		rec_sv;

	SEEDBED* seed_bed;
	SEEDTIME* seed_time;
	SEED_TABLE*	seed_prm;

	SEED_STATE	seed[SEEDBED_MAX];

	u16	seq;
	u16	sub_seq;
	int	key_mode;
	u8	msg_spd;
	u8	win_type;
	u8	msg_wait;

	u8	ret_mode;
	u8	c_pos;

	u8	eff_tcb_ct;	//エフェクトタスクカウンタ(0なら起動していない)
	u8	harvest_num;	//収穫する個数
	u8	wait;		//汎用ウェイトカウンタ
	u8	pot_pos;	//ポット位置
	u8	pot_npos;	//ポット予約位置

	u16	item_num_seed;
	u16	item_num_compost;

	GF_BGL_INI *bgl;	///<BGLデータ
	SELBOX_SYS			*sbox;
	RTCTime otime;

	NP_MSG				msg;		///<メッセージデータ

	GF_BGL_BMPWIN		win[WIN_MAX];	///<Bmpウィンドウ
	TOUCH_SW_SYS		*ynbtn_wk;	///<YesNoボタンワーク

	CATS_SYS_PTR	pActSys;	///<セルアクターシステム
	CATS_RES_PTR	pActRes;	///<セルアクターリソース
	CATS_RES_PTR	pActIconRes;	///<セルアクターリソース

	CATS_ACT_PTR		pIconAct[ICON_ACTMAX];
	CLACT_WORK_PTR		pAct[NPLANTER_ACTMAX];		///<アクター

	ARCHANDLE* icon_h;
	ARCHANDLE* seed_h;

	BMPLIST_DATA*	slist[NP_SBOX_MAX];	///<選択ボックスリスト
	SELBOX_WORK*	list_wk;	///<選択ボックスワーク

#ifdef PM_DEBUG
	GF_BGL_BMPWIN	deb_win[DEB_WIN_MAX];
	u8				deb_ct;
	u8				deb_time_rate;
	u8				deb_print;
#endif	//PM_DEBUG
}NP_APPWORK;


extern PROC_RESULT NPlanterProc_Init(PROC* proc,int* seq);
extern PROC_RESULT NPlanterProc_Main(PROC* proc,int* seq);
extern PROC_RESULT NPlanterProc_End(PROC* proc,int* seq);




#endif	//__H_NP_APP_H__
